{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Querylength</th>\n",
       "      <th>domain_token_count</th>\n",
       "      <th>path_token_count</th>\n",
       "      <th>avgdomaintokenlen</th>\n",
       "      <th>longdomaintokenlen</th>\n",
       "      <th>avgpathtokenlen</th>\n",
       "      <th>tld</th>\n",
       "      <th>charcompvowels</th>\n",
       "      <th>charcompace</th>\n",
       "      <th>ldl_url</th>\n",
       "      <th>...</th>\n",
       "      <th>SymbolCount_FileName</th>\n",
       "      <th>SymbolCount_Extension</th>\n",
       "      <th>SymbolCount_Afterpath</th>\n",
       "      <th>Entropy_URL</th>\n",
       "      <th>Entropy_Domain</th>\n",
       "      <th>Entropy_DirectoryName</th>\n",
       "      <th>Entropy_Filename</th>\n",
       "      <th>Entropy_Extension</th>\n",
       "      <th>Entropy_Afterpath</th>\n",
       "      <th>URL_Type_obf_Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>5.500000</td>\n",
       "      <td>8</td>\n",
       "      <td>4.083334</td>\n",
       "      <td>2</td>\n",
       "      <td>15</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0.676804</td>\n",
       "      <td>0.860529</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>benign</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>12</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>10</td>\n",
       "      <td>3.583333</td>\n",
       "      <td>3</td>\n",
       "      <td>12</td>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "      <td>0.715629</td>\n",
       "      <td>0.776796</td>\n",
       "      <td>0.693127</td>\n",
       "      <td>0.738315</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>benign</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>11</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>5</td>\n",
       "      <td>4.750000</td>\n",
       "      <td>2</td>\n",
       "      <td>16</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.677701</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.677704</td>\n",
       "      <td>0.916667</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.898227</td>\n",
       "      <td>benign</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>4.500000</td>\n",
       "      <td>7</td>\n",
       "      <td>5.714286</td>\n",
       "      <td>2</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "      <td>0.696067</td>\n",
       "      <td>0.879588</td>\n",
       "      <td>0.818007</td>\n",
       "      <td>0.753585</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>benign</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>9</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0.747202</td>\n",
       "      <td>0.833700</td>\n",
       "      <td>0.655459</td>\n",
       "      <td>0.829535</td>\n",
       "      <td>0.836150</td>\n",
       "      <td>0.823008</td>\n",
       "      <td>benign</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14474</th>\n",
       "      <td>29</td>\n",
       "      <td>4</td>\n",
       "      <td>14</td>\n",
       "      <td>5.750000</td>\n",
       "      <td>12</td>\n",
       "      <td>3.666667</td>\n",
       "      <td>4</td>\n",
       "      <td>20</td>\n",
       "      <td>24</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>0.690555</td>\n",
       "      <td>0.791265</td>\n",
       "      <td>0.777498</td>\n",
       "      <td>0.690227</td>\n",
       "      <td>0.656684</td>\n",
       "      <td>0.796205</td>\n",
       "      <td>spam</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14475</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>13</td>\n",
       "      <td>3.750000</td>\n",
       "      <td>8</td>\n",
       "      <td>8.461538</td>\n",
       "      <td>4</td>\n",
       "      <td>24</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>16</td>\n",
       "      <td>15</td>\n",
       "      <td>-1</td>\n",
       "      <td>0.665492</td>\n",
       "      <td>0.820010</td>\n",
       "      <td>0.879588</td>\n",
       "      <td>0.674400</td>\n",
       "      <td>0.674671</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>spam</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14476</th>\n",
       "      <td>58</td>\n",
       "      <td>3</td>\n",
       "      <td>27</td>\n",
       "      <td>6.666666</td>\n",
       "      <td>16</td>\n",
       "      <td>3.375000</td>\n",
       "      <td>3</td>\n",
       "      <td>41</td>\n",
       "      <td>34</td>\n",
       "      <td>20</td>\n",
       "      <td>...</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>0.656807</td>\n",
       "      <td>0.801139</td>\n",
       "      <td>0.684777</td>\n",
       "      <td>0.713622</td>\n",
       "      <td>0.717187</td>\n",
       "      <td>0.705245</td>\n",
       "      <td>spam</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14477</th>\n",
       "      <td>35</td>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>4.333334</td>\n",
       "      <td>9</td>\n",
       "      <td>3.600000</td>\n",
       "      <td>3</td>\n",
       "      <td>15</td>\n",
       "      <td>13</td>\n",
       "      <td>7</td>\n",
       "      <td>...</td>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>0.725963</td>\n",
       "      <td>0.897617</td>\n",
       "      <td>0.871049</td>\n",
       "      <td>0.745932</td>\n",
       "      <td>0.758824</td>\n",
       "      <td>0.790772</td>\n",
       "      <td>spam</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14478</th>\n",
       "      <td>40</td>\n",
       "      <td>3</td>\n",
       "      <td>25</td>\n",
       "      <td>6.666666</td>\n",
       "      <td>16</td>\n",
       "      <td>3.250000</td>\n",
       "      <td>3</td>\n",
       "      <td>35</td>\n",
       "      <td>31</td>\n",
       "      <td>19</td>\n",
       "      <td>...</td>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>0.674351</td>\n",
       "      <td>0.801139</td>\n",
       "      <td>0.697282</td>\n",
       "      <td>0.730563</td>\n",
       "      <td>0.731481</td>\n",
       "      <td>0.769238</td>\n",
       "      <td>spam</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>14479 rows × 80 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       Querylength  domain_token_count  path_token_count  avgdomaintokenlen  \\\n",
       "0                0                   2                12           5.500000   \n",
       "1                0                   3                12           5.000000   \n",
       "2                2                   2                11           4.000000   \n",
       "3                0                   2                 7           4.500000   \n",
       "4               19                   2                10           6.000000   \n",
       "...            ...                 ...               ...                ...   \n",
       "14474           29                   4                14           5.750000   \n",
       "14475            0                   4                13           3.750000   \n",
       "14476           58                   3                27           6.666666   \n",
       "14477           35                   3                13           4.333334   \n",
       "14478           40                   3                25           6.666666   \n",
       "\n",
       "       longdomaintokenlen  avgpathtokenlen  tld  charcompvowels  charcompace  \\\n",
       "0                       8         4.083334    2              15            7   \n",
       "1                      10         3.583333    3              12            8   \n",
       "2                       5         4.750000    2              16           11   \n",
       "3                       7         5.714286    2              15           10   \n",
       "4                       9         2.250000    2               9            5   \n",
       "...                   ...              ...  ...             ...          ...   \n",
       "14474                  12         3.666667    4              20           24   \n",
       "14475                   8         8.461538    4              24           23   \n",
       "14476                  16         3.375000    3              41           34   \n",
       "14477                   9         3.600000    3              15           13   \n",
       "14478                  16         3.250000    3              35           31   \n",
       "\n",
       "       ldl_url  ...  SymbolCount_FileName  SymbolCount_Extension  \\\n",
       "0            0  ...                    -1                     -1   \n",
       "1            2  ...                     1                      0   \n",
       "2            0  ...                     2                      0   \n",
       "3            0  ...                     0                      0   \n",
       "4            0  ...                     5                      4   \n",
       "...        ...  ...                   ...                    ...   \n",
       "14474        3  ...                     3                      2   \n",
       "14475        0  ...                    16                     15   \n",
       "14476       20  ...                     8                      7   \n",
       "14477        7  ...                     9                      8   \n",
       "14478       19  ...                     7                      6   \n",
       "\n",
       "       SymbolCount_Afterpath  Entropy_URL  Entropy_Domain  \\\n",
       "0                         -1     0.676804        0.860529   \n",
       "1                         -1     0.715629        0.776796   \n",
       "2                          1     0.677701        1.000000   \n",
       "3                         -1     0.696067        0.879588   \n",
       "4                          3     0.747202        0.833700   \n",
       "...                      ...          ...             ...   \n",
       "14474                      7     0.690555        0.791265   \n",
       "14475                     -1     0.665492        0.820010   \n",
       "14476                      9     0.656807        0.801139   \n",
       "14477                      3     0.725963        0.897617   \n",
       "14478                      7     0.674351        0.801139   \n",
       "\n",
       "       Entropy_DirectoryName  Entropy_Filename  Entropy_Extension  \\\n",
       "0                  -1.000000         -1.000000          -1.000000   \n",
       "1                   0.693127          0.738315           1.000000   \n",
       "2                   0.677704          0.916667           0.000000   \n",
       "3                   0.818007          0.753585           0.000000   \n",
       "4                   0.655459          0.829535           0.836150   \n",
       "...                      ...               ...                ...   \n",
       "14474               0.777498          0.690227           0.656684   \n",
       "14475               0.879588          0.674400           0.674671   \n",
       "14476               0.684777          0.713622           0.717187   \n",
       "14477               0.871049          0.745932           0.758824   \n",
       "14478               0.697282          0.730563           0.731481   \n",
       "\n",
       "       Entropy_Afterpath  URL_Type_obf_Type  \n",
       "0              -1.000000             benign  \n",
       "1              -1.000000             benign  \n",
       "2               0.898227             benign  \n",
       "3              -1.000000             benign  \n",
       "4               0.823008             benign  \n",
       "...                  ...                ...  \n",
       "14474           0.796205               spam  \n",
       "14475          -1.000000               spam  \n",
       "14476           0.705245               spam  \n",
       "14477           0.790772               spam  \n",
       "14478           0.769238               spam  \n",
       "\n",
       "[14479 rows x 80 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('Data/Spam.csv')\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Querylength', 'domain_token_count', 'path_token_count',\n",
       "       'avgdomaintokenlen', 'longdomaintokenlen', 'avgpathtokenlen', 'tld',\n",
       "       'charcompvowels', 'charcompace', 'ldl_url', 'ldl_domain', 'ldl_path',\n",
       "       'ldl_filename', 'ldl_getArg', 'dld_url', 'dld_domain', 'dld_path',\n",
       "       'dld_filename', 'dld_getArg', 'urlLen', 'domainlength', 'pathLength',\n",
       "       'subDirLen', 'fileNameLen', 'this.fileExtLen', 'ArgLen', 'pathurlRatio',\n",
       "       'ArgUrlRatio', 'argDomanRatio', 'domainUrlRatio', 'pathDomainRatio',\n",
       "       'argPathRatio', 'executable', 'isPortEighty', 'NumberofDotsinURL',\n",
       "       'ISIpAddressInDomainName', 'CharacterContinuityRate',\n",
       "       'LongestVariableValue', 'URL_DigitCount', 'host_DigitCount',\n",
       "       'Directory_DigitCount', 'File_name_DigitCount', 'Extension_DigitCount',\n",
       "       'Query_DigitCount', 'URL_Letter_Count', 'host_letter_count',\n",
       "       'Directory_LetterCount', 'Filename_LetterCount',\n",
       "       'Extension_LetterCount', 'Query_LetterCount', 'LongestPathTokenLength',\n",
       "       'Domain_LongestWordLength', 'Path_LongestWordLength',\n",
       "       'sub-Directory_LongestWordLength', 'Arguments_LongestWordLength',\n",
       "       'URL_sensitiveWord', 'URLQueries_variable', 'spcharUrl',\n",
       "       'delimeter_Domain', 'delimeter_path', 'delimeter_Count',\n",
       "       'NumberRate_URL', 'NumberRate_Domain', 'NumberRate_DirectoryName',\n",
       "       'NumberRate_FileName', 'NumberRate_Extension', 'NumberRate_AfterPath',\n",
       "       'SymbolCount_URL', 'SymbolCount_Domain', 'SymbolCount_Directoryname',\n",
       "       'SymbolCount_FileName', 'SymbolCount_Extension',\n",
       "       'SymbolCount_Afterpath', 'Entropy_URL', 'Entropy_Domain',\n",
       "       'Entropy_DirectoryName', 'Entropy_Filename', 'Entropy_Extension',\n",
       "       'Entropy_Afterpath', 'URL_Type_obf_Type'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "benign    7781\n",
       "spam      6698\n",
       "Name: URL_Type_obf_Type, dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['URL_Type_obf_Type'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    7781\n",
       "1    6698\n",
       "Name: URL_Type_obf_Type, dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[data['URL_Type_obf_Type']=='benign','URL_Type_obf_Type'] = 0\n",
    "data.loc[data['URL_Type_obf_Type']=='spam','URL_Type_obf_Type'] = 1\n",
    "data = data.fillna(data.mean())\n",
    "data['URL_Type_obf_Type'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = data.pop('URL_Type_obf_Type')\n",
    "X = data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Querylength</th>\n",
       "      <th>domain_token_count</th>\n",
       "      <th>path_token_count</th>\n",
       "      <th>avgdomaintokenlen</th>\n",
       "      <th>longdomaintokenlen</th>\n",
       "      <th>avgpathtokenlen</th>\n",
       "      <th>tld</th>\n",
       "      <th>charcompvowels</th>\n",
       "      <th>charcompace</th>\n",
       "      <th>ldl_url</th>\n",
       "      <th>...</th>\n",
       "      <th>SymbolCount_Directoryname</th>\n",
       "      <th>SymbolCount_FileName</th>\n",
       "      <th>SymbolCount_Extension</th>\n",
       "      <th>SymbolCount_Afterpath</th>\n",
       "      <th>Entropy_URL</th>\n",
       "      <th>Entropy_Domain</th>\n",
       "      <th>Entropy_DirectoryName</th>\n",
       "      <th>Entropy_Filename</th>\n",
       "      <th>Entropy_Extension</th>\n",
       "      <th>Entropy_Afterpath</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>10313</th>\n",
       "      <td>35</td>\n",
       "      <td>3</td>\n",
       "      <td>12</td>\n",
       "      <td>4.333334</td>\n",
       "      <td>9</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>3</td>\n",
       "      <td>19</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>0.714269</td>\n",
       "      <td>0.897617</td>\n",
       "      <td>0.871049</td>\n",
       "      <td>0.724510</td>\n",
       "      <td>0.723728</td>\n",
       "      <td>0.765088</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4316</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>2.666667</td>\n",
       "      <td>3</td>\n",
       "      <td>7.666666</td>\n",
       "      <td>3</td>\n",
       "      <td>17</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0.744683</td>\n",
       "      <td>0.796658</td>\n",
       "      <td>0.764019</td>\n",
       "      <td>0.942331</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6982</th>\n",
       "      <td>54</td>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>5.500000</td>\n",
       "      <td>8</td>\n",
       "      <td>13.500000</td>\n",
       "      <td>2</td>\n",
       "      <td>20</td>\n",
       "      <td>15</td>\n",
       "      <td>13</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>0.699386</td>\n",
       "      <td>0.860529</td>\n",
       "      <td>0.789690</td>\n",
       "      <td>0.733393</td>\n",
       "      <td>0.739401</td>\n",
       "      <td>0.758802</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3708</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>4</td>\n",
       "      <td>4.250000</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "      <td>0.732888</td>\n",
       "      <td>0.916667</td>\n",
       "      <td>0.826537</td>\n",
       "      <td>0.829302</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9951</th>\n",
       "      <td>18</td>\n",
       "      <td>3</td>\n",
       "      <td>14</td>\n",
       "      <td>3.666667</td>\n",
       "      <td>7</td>\n",
       "      <td>2.666667</td>\n",
       "      <td>3</td>\n",
       "      <td>25</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>-1</td>\n",
       "      <td>14</td>\n",
       "      <td>13</td>\n",
       "      <td>12</td>\n",
       "      <td>0.703592</td>\n",
       "      <td>0.833700</td>\n",
       "      <td>0.679250</td>\n",
       "      <td>0.717788</td>\n",
       "      <td>0.717675</td>\n",
       "      <td>0.713852</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11468</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>12</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0.771906</td>\n",
       "      <td>0.806131</td>\n",
       "      <td>0.879588</td>\n",
       "      <td>0.883402</td>\n",
       "      <td>0.902789</td>\n",
       "      <td>0.901158</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7221</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>6.500000</td>\n",
       "      <td>10</td>\n",
       "      <td>3.857143</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "      <td>0.709488</td>\n",
       "      <td>0.924957</td>\n",
       "      <td>0.800121</td>\n",
       "      <td>0.947443</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1318</th>\n",
       "      <td>42</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>5.500000</td>\n",
       "      <td>8</td>\n",
       "      <td>13.500000</td>\n",
       "      <td>2</td>\n",
       "      <td>26</td>\n",
       "      <td>21</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>0.717884</td>\n",
       "      <td>0.860529</td>\n",
       "      <td>0.789690</td>\n",
       "      <td>0.753592</td>\n",
       "      <td>0.768071</td>\n",
       "      <td>0.783127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8915</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>11</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0.773452</td>\n",
       "      <td>0.845224</td>\n",
       "      <td>0.871049</td>\n",
       "      <td>0.875713</td>\n",
       "      <td>0.891527</td>\n",
       "      <td>0.897617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11055</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>4.666666</td>\n",
       "      <td>10</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "      <td>0.793556</td>\n",
       "      <td>0.843750</td>\n",
       "      <td>0.898227</td>\n",
       "      <td>0.814038</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>11583 rows × 79 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       Querylength  domain_token_count  path_token_count  avgdomaintokenlen  \\\n",
       "10313           35                   3                12           4.333334   \n",
       "4316             3                   3                 8           2.666667   \n",
       "6982            54                   2                14           5.500000   \n",
       "3708             0                   2                 8           3.500000   \n",
       "9951            18                   3                14           3.666667   \n",
       "...            ...                 ...               ...                ...   \n",
       "11468            8                   4                 6           7.000000   \n",
       "7221             0                   2                 7           6.500000   \n",
       "1318            42                   2                12           5.500000   \n",
       "8915             5                   3                 7           5.000000   \n",
       "11055            0                   3                 5           4.666666   \n",
       "\n",
       "       longdomaintokenlen  avgpathtokenlen  tld  charcompvowels  charcompace  \\\n",
       "10313                   9         3.500000    3              19           22   \n",
       "4316                    3         7.666666    3              17           11   \n",
       "6982                    8        13.500000    2              20           15   \n",
       "3708                    4         4.250000    2               9            8   \n",
       "9951                    7         2.666667    3              25           14   \n",
       "...                   ...              ...  ...             ...          ...   \n",
       "11468                  12         3.500000    4               6            7   \n",
       "7221                   10         3.857143    2              12            6   \n",
       "1318                    8        13.500000    2              26           21   \n",
       "8915                   11         4.000000    3               9            7   \n",
       "11055                  10         3.000000    3               2            2   \n",
       "\n",
       "       ldl_url  ...  SymbolCount_Directoryname  SymbolCount_FileName  \\\n",
       "10313        7  ...                          1                     9   \n",
       "4316         0  ...                          3                     3   \n",
       "6982        13  ...                          1                    11   \n",
       "3708         0  ...                          3                     1   \n",
       "9951         1  ...                         -1                    14   \n",
       "...        ...  ...                        ...                   ...   \n",
       "11468        0  ...                          1                     3   \n",
       "7221         0  ...                          4                     0   \n",
       "1318        11  ...                          1                     9   \n",
       "8915         0  ...                          1                     5   \n",
       "11055        1  ...                          1                     1   \n",
       "\n",
       "       SymbolCount_Extension  SymbolCount_Afterpath  Entropy_URL  \\\n",
       "10313                      8                      3     0.714269   \n",
       "4316                       2                      1     0.744683   \n",
       "6982                      10                      9     0.699386   \n",
       "3708                       0                     -1     0.732888   \n",
       "9951                      13                     12     0.703592   \n",
       "...                      ...                    ...          ...   \n",
       "11468                      2                      1     0.771906   \n",
       "7221                       0                     -1     0.709488   \n",
       "1318                       8                      7     0.717884   \n",
       "8915                       4                      3     0.773452   \n",
       "11055                      0                     -1     0.793556   \n",
       "\n",
       "       Entropy_Domain  Entropy_DirectoryName  Entropy_Filename  \\\n",
       "10313        0.897617               0.871049          0.724510   \n",
       "4316         0.796658               0.764019          0.942331   \n",
       "6982         0.860529               0.789690          0.733393   \n",
       "3708         0.916667               0.826537          0.829302   \n",
       "9951         0.833700               0.679250          0.717788   \n",
       "...               ...                    ...               ...   \n",
       "11468        0.806131               0.879588          0.883402   \n",
       "7221         0.924957               0.800121          0.947443   \n",
       "1318         0.860529               0.789690          0.753592   \n",
       "8915         0.845224               0.871049          0.875713   \n",
       "11055        0.843750               0.898227          0.814038   \n",
       "\n",
       "       Entropy_Extension  Entropy_Afterpath  \n",
       "10313           0.723728           0.765088  \n",
       "4316            1.000000           1.000000  \n",
       "6982            0.739401           0.758802  \n",
       "3708            1.000000          -1.000000  \n",
       "9951            0.717675           0.713852  \n",
       "...                  ...                ...  \n",
       "11468           0.902789           0.901158  \n",
       "7221            0.000000          -1.000000  \n",
       "1318            0.768071           0.783127  \n",
       "8915            0.891527           0.897617  \n",
       "11055           1.000000          -1.000000  \n",
       "\n",
       "[11583 rows x 79 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1234)\n",
    "X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(max_depth=10, n_estimators=30)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf = RandomForestClassifier(n_estimators=30, max_depth=10)\n",
    "clf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, ..., 0, 0, 0], dtype=int64)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "label_predict = clf.predict(X_test)\n",
    "label_predict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9979281767955801"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "accuracy_score(y_test, label_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "fpr,tpr,threshold = roc_curve(y_test, label_predict)\n",
    "roc_auc = auc(fpr,tpr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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neTh4WZyMmQ1FF8AAJBt2WyG1q49ar88ZEhtTZ/+pHLkoOLgbpzXg60OAABkW66uLvruu85q3XqB6tUrqrffbsp5enFPFF++OAAAyNa8vd21YcPTbG3AvzL97wBTpkxRiRIl5OXlpTp16uinn3667/GTJ09W+fLl5e3trcDAQA0bNky3b99+gAQUXwAAsovERJtGjgzR6dORydYpvUgNU4vvokWLNHz4cI0fP1779u1T1apVFRwcrEuXLqV4/IIFC/Tqq69q/Pjx+uOPPzR9+nQtWrRIo0ePTn8IJr4AAGQL8fFJ6t59qd5//wcFBc3RxYvRZkdCNmNq8Z00aZKef/559evXTxUrVtTUqVPl4+OjGTNmpHj8Dz/8oPr166tHjx4qUaKEWrRooe7du//rlPj+KL4AAGR1t24lqF27hfruu4OSpJMnbyg8PMLkVMhuTCu+8fHx2rt3r4KCgv4O4+qqoKAg7dq1K8Xr1KtXT3v37rUX3ePHj2vt2rVq3br1Pe8nLi5OUVFRyT6SYeILAECWFhUVp5Yt52n9+jtnb/D2zqFVq7orOLiMycmQ3Zj24rYrV64oKSlJBQoUSLZeoEABHTp0KMXr9OjRQ1euXFGDBg1kGIYSExM1YMCA+251mDhxot544437JKH4AgCQVV29ekstW87Xnj3nJUl+fp5avbq7GjYsbnIyZEemv7gtLbZs2aIJEyboiy++0L59+7Rs2TKtWbNGb7311j2vM2rUKEVGRto/zpw5848jKL4AAGRFFy7cVOPGs+yl96GHvLVpU29KL9LNtIlvvnz55ObmposXLyZbv3jxogoWLJjidV577TX16tVLzz33nCSpcuXKiomJ0QsvvKAxY8bI1fXuHu/p6SlPT96jGwCA7OTkyRsKCpqjY8euS5IKFcqpkJBeeuSRAJOTITszbeLr4eGhGjVqKCwszL5ms9kUFhamunXrpnidW7du3VVu3dzunL7EMIz0BWGPLwAAWc633+63l97ixf21fXs/Si8emKlvYDF8+HD16dNHNWvWVO3atTV58mTFxMSoX79+kqTevXurSJEimjhxoiSpbdu2mjRpkqpXr646dero6NGjeu2119S2bVt7AU47ii8AAFnNq6820OnTkdq8+aRCQ3uraFE/syPBCZhafLt27arLly9r3LhxioiIULVq1bR+/Xr7C95Onz6d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ulr3RyOQmcz4i4qFv7od/4996tQNNWw4U61bL9DWrScdfn8AAAC4N+sWXwf/lnH48BU1aDBTx45d1+3biRoyZJ1sNsOh9wkAAIB7s27xdeDE99dfI9So0SydPRslSSpf/iGtXdtTrq68SAIAgKzk8OHDKliwoG7evGl2FKcSHx+vEiVKaM+ePWZHSca6xddBE98ffzyrxx+frUuXYiRJVasW0LZt/VS0qJ9D7g8AgL59+8rFxUUuLi5yd3dXyZIlNWLECN2+ffuuY1evXq3GjRsrV65c8vHxUa1atTRr1qwUb3fp0qV6/PHH5e/vr5w5c6pKlSp68803de3aNQc/oswzatQoDRkyRLly5TI7ikNs27ZNbdu2VeHCheXi4qLvv/8+VdfbsmWLHn30UXl6eqpMmTIp/j8yZcoUlShRQl5eXqpTp45++ukn++c8PDz0yiuvaOTIkRn0SDKGdYuvA2zadEJBQXN048adbzR16xbV5s19FBDga3IyAICza9mypS5cuKDjx4/r448/1ldffaXx48cnO+azzz5Tu3btVL9+fe3evVu//fabunXrpgEDBuiVV15JduyYMWPUtWtX1apVS+vWrdOBAwf00Ucf6ddff9XcuXMz7XHFx8c77LZPnz6t1atXq2/fvg90O47M+KBiYmJUtWpVTZkyJdXXOXHihNq0aaMmTZooPDxcL7/8sp577jlt2LDBfsyiRYs0fPhwjR8/Xvv27VPVqlUVHBysS5cu2Y/p2bOnduzYod9//z1DH9MDMSwmMjLSkGREzmyYobe7atVhw9PzLUN63ZBeN5o2nW3cvBmXofcBAHCc2NhY4+DBg0ZsbKzZUdKsT58+Rrt27ZKtdezY0ahevbr98unTpw13d3dj+PDhd13/008/NSQZP/74o2EYhrF7925DkjF58uQU7+/69ev3zHLmzBmjW7duRp48eQwfHx+jRo0a9ttNKefQoUONxo0b2y83btzYGDRokDF06FDjoYceMh5//HGje/fuRpcuXZJdLz4+3njooYeM2bNnG4ZhGElJScaECROMEiVKGF5eXkaVKlWMJUuW3DOnYRjGBx98YNSsWTPZ2pUrV4xu3boZhQsXNry9vY1KlSoZCxYsSHZMShkNwzD2799vtGzZ0vD19TUCAgKMp59+2rh8+bL9euvWrTPq169v+Pv7G3nz5jXatGljHD169L4ZM5IkY/ny5f963IgRI4xHHnkk2VrXrl2N4OBg++XatWsbgwYNsl9OSkoyChcubEycODHZ9Zo0aWKMHTs2xfu539ecva9FRv5r3rSw7nl8M3Crw6VLMera9TvFxd15e8u2bctp8eLO8vKy7j8vADiNeTWlmIjMv1/fgtLT6dsfeeDAAf3www8qXry4fe27775TQkLCXZNdSerfv79Gjx6tb7/9VnXq1NH8+fOVM2dODRw4MMXbz507d4rr0dHRaty4sYoUKaKVK1eqYMGC2rdvn2w2W5ryz549Wy+++KJ27twpSTp69Kg6d+6s6Oho+7t8bdiwQbdu3VKHDh0kSRMnTtS8efM0depUlS1bVtu2bdPTTz+t/Pnzq3Hjxinez/bt21WzZs1ka7dv31aNGjU0cuRI+fn5ac2aNerVq5dKly6t2rVr3zPjjRs31LRpUz333HP6+OOPFRsbq5EjR6pLly7atGmTpDvT1+HDh6tKlSqKjo7WuHHj1KFDB4WHh9/zNHoTJkzQhAkT7vvvdfDgQRUrVuzf/llTbdeuXQoKCkq2FhwcrJdfflnSnQn33r17NWrUKPvnXV1dFRQUpF27diW7Xu3atbV9+/YMy/agLNzMMq74BgT4aubMdurefam6dHlEc+a0l7t75r73NADAQWIipOhzZqf4V6tXr1bOnDmVmJiouLg4ubq66vPPP7d//siRI/L391ehQoXuuq6Hh4dKlSqlI0eOSJL+/PNPlSpVSu7u7mnKsGDBAl2+fFk///yz8ua9c776MmXS/g6lZcuW1fvvv2+/XLp0afn6+mr58uXq1auX/b6efPJJ5cqVS3FxcZowYYJCQ0NVt25dSVKpUqW0Y8cOffXVV/csvqdOnbqr+BYpUiTZLwdDhgzRhg0btHjx4mTF958Z3377bVWvXj1ZSZ0xY4YCAwN15MgRlStXTp06dUp2XzNmzFD+/Pl18OBBVapUKcWMAwYMUJcuXe7771W4cOH7fj6tIiIiVKBAgWRrBQoUUFRUlGJjY3X9+nUlJSWleMyhQ4fuynbq1KkMzfcgKL4ZpEuXR1S4cC7VrVtUbm5snQYAp+FbMFvcb5MmTfTll18qJiZGH3/8sXLkyHFX0Uotw0jf6TfDw8NVvXp1e+lNrxo1aiS7nCNHDnXp0kXz589Xr169FBMToxUrVmjhwoWS7kyEb926pebNmye7Xnx8vKpXr37P+4mNjZWXl1eytaSkJE2YMEGLFy/WuXPnFB8fr7i4uLveze+fGX/99Vdt3rzZPpH+X8eOHVO5cuX0559/aty4cdq9e7euXLlin4SfPn36nsU3b968D/zvaSZvb2/dunXL7Bh21i2+D7DVwTAM/fjjWdWtG5hsvUGDjPszAwAgi0jndoPM5uvra5+uzpgxQ1WrVtX06dP17LPPSpLKlSunyMhInT9//q4JYXx8vI4dO6YmTZrYj92xY4cSEhLSNPX19va+7+ddXV3vKtUJCQkpPpZ/6tmzpxo3bqxLly4pJCRE3t7eatmypaQ7Wywkac2aNSpSpEiy63l6et4zT758+XT9+vVkax988IE++eQTTZ48WZUrV5avr69efvnlu17A9s+M0dHRatu2rd5777277uevKXvbtm1VvHhxTZs2TYULF5bNZlOlSpXu++I4M7Y6FCxYUBcvXky2dvHiRfn5+cnb21tubm5yc3NL8ZiCBZP/wnbt2jXlz58/w7I9KAuPJtNXfA3D0IgRIapXb4a++ip7fDMEAFiLq6urRo8erbFjxyo2NlaS1KlTJ7m7u+ujjz666/ipU6cqJiZG3bt3lyT16NFD0dHR+uKLL1K8/Rs3bqS4XqVKFYWHh9/zdGf58+fXhQsXkq2Fh4en6jHVq1dPgYGBWrRokebPn6/OnTvbS3nFihXl6emp06dPq0yZMsk+AgMD73mb1atX18GDB5Ot7dy5U+3atdPTTz+tqlWrJtsCcj+PPvqofv/9d5UoUeKuDL6+vrp69aoOHz6ssWPHqlmzZqpQocJdpTslAwYMUHh4+H0/MnqrQ926dRUWFpZsLSQkxL6NxMPDQzVq1Eh2jM1mU1hYmP2Yvxw4cOC+U/fMZt3im46Jb1KSTQMGrNaHH97ZuD1w4FodOnQlo5MBAPDAOnfuLDc3N/tprIoVK6b3339fkydP1pgxY3To0CEdO3ZMkyZN0ogRI/Sf//xHderUkSTVqVPHvjZixAjt2rVLp06dUlhYmDp37qzZs2eneJ/du3dXwYIF1b59e+3cuVPHjx/X0qVL7S94atq0qfbs2aM5c+bozz//1Pjx43XgwIFUP6YePXpo6tSpCgkJUc+ePe3ruXLl0iuvvKJhw4Zp9uzZOnbsmPbt26fPPvvsnlmlOy/Y2rVrl5KSkuxrZcuWVUhIiH744Qf98ccf6t+//12TzZQMGjRI165dU/fu3fXzzz/r2LFj2rBhg/r166ekpCTlyZNHDz30kL7++msdPXpUmzZt0vDhw//1dvPmzXtXkf7nR44c9/4DfnR0tL0gS3dOVRYeHq7Tp0/bjxk1apR69+5tvzxgwAAdP35cI0aM0KFDh/TFF19o8eLFGjZsmP2Y4cOHa9q0aZo9e7b++OMPvfjii4qJiVG/fv2S3f/27dvVokWLf32cmSZDzxGRDdhPjzGnWZquFx+faPTosdR+ujIXl9eNr7/e46CUAIDM5mynMzMMw5g4caKRP39+Izo62r62YsUKo2HDhoavr6/h5eVl1KhRw5gxY0aKt7to0SKjUaNGRq5cuQxfX1+jSpUqxptvvnnf05mdPHnS6NSpk+Hn52f4+PgYNWvWNHbv3m3//Lhx44wCBQoY/v7+xrBhw4zBgwffdTqzoUOHpnjbBw8eNCQZxYsXN2w2W7LP2Ww2Y/LkyUb58uUNd3d3I3/+/EZwcLCxdevWe2ZNSEgwChcubKxfv96+dvXqVaNdu3ZGzpw5jYCAAGPs2LFG7969k/373ivjkSNHjA4dOhi5c+c2vL29jYcffth4+eWX7VlDQkKMChUqGJ6enkaVKlWMLVu2pPoUY+m1efNmQ9JdH3369LEf06dPn2TPwV/Xq1atmuHh4WGUKlXKmDlz5l23/dlnnxnFihUzPDw8jNq1a9tPW/eXH374wcidO7dx69atFLOZcTozF8NI5w72bCoqKkr+/v6KnBMkv14hqbrO7duJ6tr1O61ceViSlCOHq+bMaa/u3Ss7MioAIBPdvn1bJ06cUMmSJe96wROc15QpU7Ry5cpkb86AjNG1a1dVrVpVo0ePTvHz9/uas/e1yEj5+WXcu99a+MVtqTssOjpe7dsvVFjYCUmSp6eblizprLZtyzswHAAAyAz9+/fXjRs3dPPmTad922IzxMfHq3Llysm2R2QF1i2+qWi+N27cVps2C/TDD2ckSb6+7lqxopuaNSvl6HAAACAT5MiRQ2PGjDE7htPx8PDQ2LFjzY5xF+sW31S8uK1r1+/spdff31Pr1vW86xRmAAAAyB6se1aHVEx83323mfz9PZU/v4+2bOlL6QUAAMjGrDvxTUXxrV69kNat66k8ebz18MP5MiETAMBsFnvNN2AaM77WrFt8U9jqcPp0pIoW9ZOr69+fY8oLANbw15sh3Lp161/fgQzAg/vrHevc3Nwy7T6tW3z/Yd++C2rRYq6eeqqivvyyjVwe4C2NAQDZj5ubm3Lnzq1Lly5Jknx8fPhZADiIzWbT5cuX5ePjc9834MhoFi6+f38z27HjtNq0WaCoqDh99dVeVayYXy+9VMfEbAAAMxQsWFCS7OUXgOO4urqqWLFimfoLpnWL7///I4eEHFO7dgsVG5soSWrQoJj69KlqZjIAgElcXFxUqFAhBQQEKCEhwew4gFPz8PCQq2vmnmchSxTfKVOm6IMPPlBERISqVq2qzz77TLVr177n8UuWLNFrr72mkydPqmzZsnrvvffUunXrNN6ri77//pC6dv1O8fF33qO7RYvSWr68q3x83B/g0QAAsjs3N7dM3XcIIHOYfjqzRYsWafjw4Ro/frz27dunqlWrKjg4+J5/Zvrhhx/UvXt3Pfvss/rll1/Uvn17tW/fXgcOHEjb/e7IraeeWmwvvR06PKyVK7tRegEAAJyUi2HyeVvq1KmjWrVq6fPPP5d0Z7NzYGCghgwZoldfffWu47t27aqYmBitXr3avvbYY4+pWrVqmjp16r/e31/v/Sy9KunO+0L36lVFM2a0U44cpv8eAAAAYHl/9bXIyEj5+fll2O2a2vTi4+O1d+9eBQUF2ddcXV0VFBSkXbt2pXidXbt2JTtekoKDg+95/L8ZOLCmZs1qT+kFAABwcqbu8b1y5YqSkpJUoECBZOsFChTQoUOHUrxOREREisdHRESkeHxcXJzi4uLslyMjI//6jF5++TG9/noDRUffTP+DAAAAQIaKioqSlPFvcpElXtzmSBMnTtQbb7yRwmc+1uTJH2vy5MxOBAAAgNS4evXq/29RzRimFt98+fLJzc1NFy9eTLZ+8eJF+7kU/6lgwYJpOn7UqFEaPny4/fKNGzdUvHhxnT59OkP/IZE1RUVFKTAwUGfOnMnQPULImni+rYXn21p4vq0lMjJSxYoVU968eTP0dk0tvh4eHqpRo4bCwsLUvn17SXde3BYWFqbBgweneJ26desqLCxML7/8sn0tJCREdevWTfF4T09PeXp63rXu7+/PF46F+Pn58XxbCM+3tfB8WwvPt7Vk9Hl+Td/qMHz4cPXp00c1a9ZU7dq1NXnyZMXExKhfv36SpN69e6tIkSKaOHGiJGno0KFq3LixPvroI7Vp00YLFy7Unj179PXXX5v5MAAAAJDFmV58u3btqsuXL2vcuHGKiIhQtWrVtH79evsL2E6fPp2s7derV08LFizQ2LFjNXr0aJUtW1bff/+9KlWqZNZDAAAAQDZgevGVpMGDB99za8OWLVvuWuvcubM6d+6crvvy9PTU+PHjU9z+AOfD820tPN/WwvNtLTzf1uKo59v0N7AAAAAAMgPv2gAAAABLoPgCAADAEii+AAAAsASKLwAAACzBKYvvlClTVKJECXl5ealOnTr66aef7nv8kiVL9PDDD8vLy0uVK1fW2rVrMykpMkJanu9p06apYcOGypMnj/LkyaOgoKB//f8DWUtav77/snDhQrm4uNjfLAfZQ1qf7xs3bmjQoEEqVKiQPD09Va5cOb6nZyNpfb4nT56s8uXLy9vbW4GBgRo2bJhu376dSWnxILZt26a2bduqcOHCcnFx0ffff/+v19myZYseffRReXp6qkyZMpo1a1ba79hwMgsXLjQ8PDyMGTNmGL///rvx/PPPG7lz5zYuXryY4vE7d+403NzcjPfff984ePCgMXbsWMPd3d3Yv39/JidHeqT1+e7Ro4cxZcoU45dffjH++OMPo2/fvoa/v79x9uzZTE6O9Ejr8/2XEydOGEWKFDEaNmxotGvXLnPC4oGl9fmOi4szatasabRu3drYsWOHceLECWPLli1GeHh4JidHeqT1+Z4/f77h6elpzJ8/3zhx4oSxYcMGo1ChQsawYcMyOTnSY+3atcaYMWOMZcuWGZKM5cuX3/f448ePGz4+Psbw4cONgwcPGp999pnh5uZmrF+/Pk3363TFt3bt2sagQYPsl5OSkozChQsbEydOTPH4Ll26GG3atEm2VqdOHaN///4OzYmMkdbn+58SExONXLlyGbNnz3ZURGSg9DzfiYmJRr169YxvvvnG6NOnD8U3G0nr8/3ll18apUqVMuLj4zMrIjJQWp/vQYMGGU2bNk22Nnz4cKN+/foOzYmMl5riO2LECOORRx5Jtta1a1cjODg4TfflVFsd4uPjtXfvXgUFBdnXXF1dFRQUpF27dqV4nV27diU7XpKCg4PveTyyjvQ83/9069YtJSQkKG/evI6KiQyS3uf7zTffVEBAgJ599tnMiIkMkp7ne+XKlapbt64GDRqkAgUKqFKlSpowYYKSkpIyKzbSKT3Pd7169bR37177dojjx49r7dq1at26daZkRubKqL6WJd65LaNcuXJFSUlJ9rc7/kuBAgV06NChFK8TERGR4vEREREOy4mMkZ7n+59GjhypwoUL3/XFhKwnPc/3jh07NH36dIWHh2dCQmSk9Dzfx48f16ZNm9SzZ0+tXbtWR48e1cCBA5WQkKDx48dnRmykU3qe7x49eujKlStq0KCBDMNQYmKiBgwYoNGjR2dGZGSye/W1qKgoxcbGytvbO1W341QTXyAt3n33XS1cuFDLly+Xl5eX2XGQwW7evKlevXpp2rRpypcvn9lxkAlsNpsCAgL09ddfq0aNGuratavGjBmjqVOnmh0NDrBlyxZNmDBBX3zxhfbt26dly5ZpzZo1euutt8yOhizMqSa++fLlk5ubmy5evJhs/eLFiypYsGCK1ylYsGCajkfWkZ7n+y8ffvih3n33XYWGhqpKlSqOjIkMktbn+9ixYzp58qTatm1rX7PZbJKkHDly6PDhwypdurRjQyPd0vP1XahQIbm7u8vNzc2+VqFCBUVERCg+Pl4eHh4OzYz0S8/z/dprr6lXr1567rnnJEmVK1dWTEyMXnjhBY0ZM0aursz2nMm9+pqfn1+qp72Sk018PTw8VKNGDYWFhdnXbDabwsLCVLdu3RSvU7du3WTHS1JISMg9j0fWkZ7nW5Lef/99vfXWW1q/fr1q1qyZGVGRAdL6fD/88MPav3+/wsPD7R9PPvmkmjRpovDwcAUGBmZmfKRRer6+69evr6NHj9p/wZGkI0eOqFChQpTeLC49z/etW7fuKrd//dJz5/VScCYZ1tfS9rq7rG/hwoWGp6enMWvWLOPgwYPGCy+8YOTOnduIiIgwDMMwevXqZbz66qv243fu3GnkyJHD+PDDD40//vjDGD9+PKczy0bS+ny/++67hoeHh/Hdd98ZFy5csH/cvHnTrIeANEjr8/1PnNUhe0nr83369GkjV65cxuDBg43Dhw8bq1evNgICAoy3337brIeANEjr8z1+/HgjV65cxrfffmscP37c2Lhxo1G6dGmjS5cuZj0EpMHNmzeNX375xfjll18MScakSZOMX375xTh16pRhGIbx6quvGr169bIf/9fpzP773/8af/zxhzFlyhROZ/aXzz77zChWrJjh4eFh1K5d2/jxxx/tn2vcuLHRp0+f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3333r9e9l7Zt28owDK1Zs0a1atXS9u3b9fHHH9s/Hx0drTfeeEMdO3a867peXl73vF0PDw/7c/Duu++qTZs2euONN/TWW29JkhYuXKhXXnlFH330kerWratcuXLpgw8+0O7du++bNzo6WjVq1Ej2C8dfssoLGAFkbRRfAE5v7969stls+uijj+zTzL/2k95PuXLlVK5cOQ0bNkzdu3fXzJkz1aFDBz366KM6ePDgXQX737i6uqZ4HT8/PxUuXFg7d+5U48aN7es7d+5U7dq1kx3XtWtXde3aVU899ZRatmypa9euKW/evMlu76/9tElJSffN4+XlpY4dO2r+/Pk6evSoypcvr0cffdT++UcffVSHDx9O8+P8p7Fjx6pp06Z68cUX7Y+zXr16GjhwoP2Yf05sPTw87sr/6KOPatGiRQoICJCfn98DZQJgTby4DYDTK1OmjBISEvTZZ5/p+PHjmjt3rqZOnXrP42NjYzV48GBt2bJFp06d0s6dO/Xzzz/btzCMHDlSP/zwgwYPHqzw8HD9+eefWrFiRZpf3Pa//vvf/+q9997TokWLdPjwYb366qsKDw/X0KFDJUmTJk3St99+q0OHDunIkSNasmSJChYsmOKbbgQEBMjb21vr16/XxYsXFRkZec/77dmzp9asWaMZM2bYX9T2l3HjxmnOnDl644039Pvvv+uPP/7QwoULNXbs2DQ9trp166pKlSqaMGGCJKls2bLas2ePNmzYoCNHjui1117Tzz//nOw6JUqU0G+//abDhw/rypUrSkhIUM+ePZUvXz61a9dO27dv14kTJ7Rlyxa99NJLOnv2bJoyAbAmii8Ap1e1alVNmjRJ7733nipVqqT58+cnOxXYP7m5uenq1avq3bu3ypUrpy5duqhVq1Z64403JElVqlTR1q1bdeTIETVs2FDVq1fXuHHjVLhw4XRnfOmllzR8+HD95z//UeXKlbV+/XqtXLlSZcuWlXRnm8T777+vmjVrqlatWjp58qTWrl1rn2D/rxw5cujTTz/VV199pcKFC6tdu3b3vN+mTZsqb968Onz4sHr06JHsc8HBwVq9erU2btyoWrVq6bHHHtPHH3+s4sWLp/nxDRs2TN98843OnDmj/v37q2PHjuratavq1Kmjq1evJpv+StLzzz+v8uXLq2bNmsqfP7927twpHx8fbdu2TcWKFVPHjh1VoUIFPfvss7p9+zYTYACp4mIYhmF2CAAAAMDRmPgCAADAEii+AAAAsASKLwAAACyB4gsAAABLoPgCAADAEii+AAAAsASKLwAAACyB4gsAAABLoPgCAADAEii+AAAAsASKLwAAACyB4gsAAABL+D8r8Nwu5oTu6gAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "lw = 2\n",
    "plt.figure(figsize=(8,8))\n",
    "plt.plot(fpr, tpr, color='darkorange',\n",
    "         lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)\n",
    "plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n",
    "plt.xlim([0.0, 1.0])\n",
    "plt.ylim([0.0, 1.05])\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.legend(loc=\"lower right\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "20bebc860e821dfc8c3402aa900049950a23cadb8eca4814f2eb319ccf2768b5"
  },
  "kernelspec": {
   "display_name": "Python 3.8.11 64-bit ('ml-networking': conda)",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.11"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
